//
//  HMLonginController.swift
//  MyWeibo
//
//  Created by apple on 16/4/19.
//  Copyright © 2016年 apple. All rights reserved.
//
/**

网络获取
App Key：3834948994
App Secret：1bd18d52357f50e1075fd46625278888


*/
import UIKit
import SVProgressHUD

//设置 APP key
let WEIBO_APPKEY = "3834948994"
//设置回调页url
let WB_REDIRECT_URI = "http://www.baidu.com/"

let WB_SECRET = "1bd18d52357f50e1075fd46625278888"


class HMLonginController: UIViewController,UIWebViewDelegate{
    
    
    //给当前控制器的根视图设置成webview
    override func loadView() {
        
        view = webView
        
        /*
        拼接请求字符串
        https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/
        */
        
        let urlString = "https://api.weibo.com/oauth2/authorize?client_id=\(WEIBO_APPKEY)&redirect_uri=\(WB_REDIRECT_URI)"
        
        //        print(urlString)
        //设置请求url
        let url = NSURL(string: urlString)
        
        //设置请求
        let request = NSURLRequest(URL: url!)
        
        webView.loadRequest(request)
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        title = "登录"
        
        view.backgroundColor = UIColor.whiteColor()
        
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: UIBarButtonItemStyle.Plain, target: self, action: "close")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: UIBarButtonItemStyle.Plain, target: self, action: "autoFull")
    }
    
    //添加点击方法
    @objc private func close(){
        
        dismissViewControllerAnimated(true, completion: nil)
    }
    
    //点击自动填充方法实现
    @objc private func autoFull(){
        
        let jsString = "document.getElementById('userId').value='gouqiaozhao60@163.com';document.getElementById('passwd').value='aaa333'"
        webView.stringByEvaluatingJavaScriptFromString(jsString)
        
    }
    
    //懒加载webView
    private lazy var webView:UIWebView = {
        
        let wb = UIWebView()
        
        //设置webView的代理方法
        wb.delegate = self
        
        return wb
    }()
    
}

//创建一个分类用来实现webview的代理方法
extension HMLonginController{
    
    //当webview要加载一个请求的时候 会调用的方法来询问是否要加载这个请求
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        print(request.URL)
        
        //首先判断如是否存在
        guard let url = request.URL else{
            
            return false
        }
        //判断是否以回调页开头 如果是就截取获得code码
        if url.absoluteString.hasPrefix(WB_REDIRECT_URI){
            
            //对比截取字符串
            if let q = url.query where q.containsString("code="){
                
                let code = q.substringFromIndex("code=".endIndex)
                
                HMUserAccountViewModel.sharedViewModel.loadAccessTonken(code, finished: { (isSuccess) -> () in
                    
                    if isSuccess{
                        
                        //把当前控制器dismiss调
                        self.dismissViewControllerAnimated(false, completion: { () -> Void in
                            
                            //发出通知跳转控制器
                            NSNotificationCenter .defaultCenter().postNotificationName( HMChangeRootVCNotification, object: nil)
                            
                        })
                        
                        print("登录成功,关闭切换当前控制器")
                        
                    }else{
                        print("登录失败")
                        
                    }
                    
                })
                
            }
            
            return false
        }
        
        // 判断是否是回调页，如果是回调页，返回 false
        return true
    }
    //
    //    //加载loadAccessTonken
    //    private func loadAccessTonken(code:String){
    //
    //    //请求url
    //    let url = "https://api.weibo.com/oauth2/access_token"
    //
    //
    //    /**
    //
    //    必选	类型及范围	说明
    //    client_id	true	string	申请应用时分配的AppKey。
    //    client_secret	true	string	申请应用时分配的AppSecret。
    //    grant_type	true	string	请求的类型，填写authorization_code
    //
    //    grant_type为authorization_code时
    //    必选	类型及范围	说明
    //    code	true	string	调用authorize获得的code值。
    //    redirect_uri	true	string	回调地址，需需与注册应用里的回调地址一致。
    //
    //    */
    //
    //    let param = [
    //
    //        "client_id":WEIBO_APPKEY,
    //        "client_secret":WB_SECRET,
    //        "grant_type":"authorization_code",
    //        "code":code,
    //        "redirect_uri":WB_REDIRECT_URI
    //
    //    ]
    //
    //    //框架发送请求
    //    HMNetworkTools.sharedTools.request(.Post, urlString: url, parameters: param) { (responseObject, error) -> () in
    //
    //        if error != nil{
    //
    //            return
    //        }
    //        print("请求成功\(responseObject)")
    //
    //        //把请求回来的数据转换成字典
    //        guard let dict = responseObject as? [String:AnyObject] else{
    //
    //            print("后台返回的数据格式不对")
    //            return
    //        }
    //
    //        //字典转模型
    //        let account = HMUserAccount(dict: dict)
    //
    //        //获取到个人信息
    //        self.loadUserInfo(account)
    //
    //        }
    //
    //    }
    //
    //    //获取个人信息的方法
    //    private func loadUserInfo(account:HMUserAccount){
    //
    //        // 请求地址
    //        let urlString = "https://api.weibo.com/2/users/show.json"
    //
    //        // 请求参数
    //        let params = [
    //            "access_token": account.access_token ?? "",
    //            "uid": account.uid ?? ""
    //        ]
    //
    //        // 发送请求返回数据获取用户信息
    //        HMNetworkTools.sharedTools.request(urlString: urlString, parameters: params) { (responseObject, error) -> () in
    //
    //            if error != nil {
    //                SVProgressHUD.showErrorWithStatus("网络错误")
    //                print(error)
    //                return
    //            }
    //            // 判断返回数据是否是字典
    //            guard let dict = responseObject as? [String: AnyObject] else {
    //                print("后台返回的数据格式不对")
    //                return
    //            }
    //            // 强转字典里字符串获得名字
    //            account.name = dict["name"] as? String
    //            account.avatar_large = dict["avatar_large"] as? String
    //
    //            print(account)
    //            //使用 归档的形式来保存 登录信息
    //            self.saveAccount(account)
    //        }
    //
    //    }
    //    // 归档用户的个人信息
    //    private func saveAccount(account: HMUserAccount) {
    //
    //        // 归档的路径 ： document路径 + 文件名
    //        let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("account.archive")
    //
    //        print(path)
    //        // 归档
    //        NSKeyedArchiver.archiveRootObject(account, toFile: path)
    //    }
    //
    //
    //    // 去沙盒中读取 读取用户的登录信息
    //    private func accountInSanbox() -> HMUserAccount? {
    //        // 测试解档
    //        let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("account.archive")
    //        let result = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? HMUserAccount
    //
    //        return result
    //    }
    //
    // 开始加载
    func webViewDidStartLoad(webView: UIWebView) {
        // 显示loading
        SVProgressHUD.show()
    }
    
    // 结束
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    
}
